package co.edu.usbcali.rebio.presentation.backEndBeans;

import co.edu.usbcali.rebio.exceptions.*;
import co.edu.usbcali.rebio.modelo.*;
import co.edu.usbcali.rebio.modelo.dto.RebTrataminetoDTO;
import co.edu.usbcali.rebio.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.rebio.utilities.*;

import com.icesoft.faces.async.render.RenderManager;
import com.icesoft.faces.async.render.Renderable;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.ext.HtmlSelectOneRadio;
import com.icesoft.faces.context.DisposableBean;
import com.icesoft.faces.webapp.xmlhttp.FatalRenderingException;
import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
import com.icesoft.faces.webapp.xmlhttp.RenderingException;
import com.icesoft.faces.webapp.xmlhttp.TransientRenderingException;

import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;

/**
 * 
 * 
 * @author Zathura Code Generator http://code.google.com/p/zathura
 * 
 */
public class RebTrataminetoView extends DataSource implements Renderable,
		DisposableBean {
	private HtmlInputText txtTraEstado;
	private HtmlInputText txtTraNombre;
	private HtmlInputText txtTraCodigo;
	private HtmlSelectOneMenu cmbTraAgente1;
	private HtmlSelectOneMenu cmbTraCantidadAg1;
	private HtmlSelectOneMenu cmbTraAplicacionAg1;
	private HtmlSelectOneMenu cmbTraAgente2;
	private HtmlSelectOneMenu cmbTraCantidadAg2;
	private HtmlSelectOneMenu cmbTraAplicacionAg2;
	private HtmlSelectOneMenu cmbTraAgente3;
	private HtmlSelectOneMenu cmbTraCantidadAg3;
	private HtmlSelectOneMenu cmbTraAplicacionAg3;
	private HtmlSelectOneRadio radCantidad;
	private HtmlCommandButton btnSave;
	private HtmlCommandButton btnModify;
	private HtmlCommandButton btnDelete;
	private HtmlCommandButton btnClear;
	private HtmlCommandButton btnAceptar;
	private boolean renderDataTable;
	private boolean flag = true;
	private boolean btnErrorf = false;
	private RenderManager renderManager;
	private PersistentFacesState state = PersistentFacesState.getInstance();
	private List<RebTratamineto> rebTratamineto;
	private List<RebTrataminetoDTO> rebTrataminetoDTO;
	private List<SelectItem> listAgente1 = new ArrayList<SelectItem>();
	private List<SelectItem> listCantidad1 = new ArrayList<SelectItem>();
	private List<SelectItem> listAplicacion1 = new ArrayList<SelectItem>();
	private List<SelectItem> listAgente2 = new ArrayList<SelectItem>();
	private List<SelectItem> listCantidad2 = new ArrayList<SelectItem>();
	private List<SelectItem> listAplicacion2 = new ArrayList<SelectItem>();
	private List<SelectItem> listAgente3 = new ArrayList<SelectItem>();
	private List<SelectItem> listCantidad3 = new ArrayList<SelectItem>();
	private List<SelectItem> listAplicacion3 = new ArrayList<SelectItem>();
	private List<SelectItem> cantidadAgen = new ArrayList<SelectItem>();

	public RebTrataminetoView() {
		super("");
	}

	public String action_clear() {
		// txtTraEstado.setValue(null);
		// txtTraEstado.setDisabled(true);
		txtTraNombre.setValue(null);
		txtTraNombre.setDisabled(false);
		txtTraCodigo.setValue(null);
		txtTraCodigo.setDisabled(false);

		cmbTraAgente1.setValue("0");
		cmbTraAgente1.setDisabled(true);
		cmbTraCantidadAg1.setValue("0");
		cmbTraCantidadAg1.setDisabled(true);
		cmbTraAplicacionAg1.setValue("0");
		cmbTraAplicacionAg1.setDisabled(true);

		cmbTraAgente2.setValue("0");
		cmbTraAgente2.setDisabled(true);
		cmbTraCantidadAg2.setValue("0");
		cmbTraCantidadAg2.setDisabled(true);
		cmbTraAplicacionAg2.setValue("0");
		cmbTraAplicacionAg2.setDisabled(true);

		cmbTraAgente3.setValue("0");
		cmbTraAgente3.setDisabled(true);
		cmbTraCantidadAg3.setValue("0");
		cmbTraCantidadAg3.setDisabled(true);
		cmbTraAplicacionAg3.setValue("0");
		cmbTraAplicacionAg3.setDisabled(true);

		btnSave.setDisabled(false);
		// btnDelete.setDisabled(true);
		btnModify.setDisabled(true);
		btnClear.setDisabled(false);

		return "";
	}

	public void ChangeValue(ValueChangeEvent event) {
		if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
			Integer cantidadAgentes = new Integer(radCantidad.getValue()
					.toString());
			if (cantidadAgentes == 1) {
				cmbTraAgente1.setDisabled(false);
				cmbTraAplicacionAg1.setDisabled(false);
				cmbTraCantidadAg1.setDisabled(false);
				cmbTraAgente2.setDisabled(true);
				cmbTraAplicacionAg2.setDisabled(true);
				cmbTraCantidadAg2.setDisabled(true);
				cmbTraAgente3.setDisabled(true);
				cmbTraAplicacionAg3.setDisabled(true);
				cmbTraCantidadAg3.setDisabled(true);
			} else if (cantidadAgentes == 2) {
				cmbTraAgente1.setDisabled(false);
				cmbTraAplicacionAg1.setDisabled(false);
				cmbTraCantidadAg1.setDisabled(false);
				cmbTraAgente2.setDisabled(false);
				cmbTraAplicacionAg2.setDisabled(false);
				cmbTraCantidadAg2.setDisabled(false);
				cmbTraAgente3.setDisabled(true);
				cmbTraAplicacionAg3.setDisabled(true);
				cmbTraCantidadAg3.setDisabled(true);
			} else if (cantidadAgentes == 3) {
				cmbTraAgente1.setDisabled(false);
				cmbTraAplicacionAg1.setDisabled(false);
				cmbTraCantidadAg1.setDisabled(false);
				cmbTraAgente2.setDisabled(false);
				cmbTraAplicacionAg2.setDisabled(false);
				cmbTraCantidadAg2.setDisabled(false);
				cmbTraAgente3.setDisabled(false);
				cmbTraAplicacionAg3.setDisabled(false);
				cmbTraCantidadAg3.setDisabled(false);
			}

		}
	}

	public void listener_txtId(ValueChangeEvent event) {
		if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
			RebTratamineto entity = null;

			try {
				Integer traCodigo = new Integer(txtTraCodigo.getValue()
						.toString());
				entity = BusinessDelegatorView.getRebTratamineto(traCodigo);
			} catch (Exception e) {
				// TODO: handle exception
			}

			if (entity == null) {
				// txtTraEstado.setDisabled(false);
				txtTraNombre.setDisabled(false);
				txtTraCodigo.setDisabled(false);

				cmbTraAgente1.setDisabled(false);
				cmbTraCantidadAg1.setDisabled(false);
				cmbTraAplicacionAg1.setDisabled(false);

				cmbTraAgente2.setDisabled(false);
				cmbTraCantidadAg2.setDisabled(false);
				cmbTraAplicacionAg2.setDisabled(false);

				cmbTraAgente3.setDisabled(false);
				cmbTraCantidadAg3.setDisabled(false);
				cmbTraAplicacionAg3.setDisabled(false);

				btnSave.setDisabled(false);
				// btnDelete.setDisabled(true);
				btnModify.setDisabled(true);
				btnClear.setDisabled(false);
			} else {
				Object variables[] = { "rebTratamineto.traCodigo", true,
						entity.getTraCodigo(), "=" };
				List<RebAgentesTratamiento> entity2;
				try {
					entity2 = BusinessDelegatorView
							.findByCriteriaInRebAgentesTratamiento(variables,
									null, null);
					if (entity2.size() == 1) {
						radCantidad.setValue(1);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setDisabled(true);
						cmbTraCantidadAg2.setDisabled(true);
						cmbTraAplicacionAg2.setDisabled(true);
						cmbTraAgente3.setDisabled(true);
						cmbTraCantidadAg3.setDisabled(true);
						cmbTraAplicacionAg3.setDisabled(true);
					} else if (entity2.size() == 2) {
						radCantidad.setValue(2);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setValue(entity2.get(1)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg2.setValue(entity2.get(1)
								.getAgtCantidad());
						cmbTraAplicacionAg2.setValue(entity2.get(1)
								.getAgtAplicacion());
						cmbTraAgente2.setDisabled(false);
						cmbTraCantidadAg2.setDisabled(false);
						cmbTraAplicacionAg2.setDisabled(false);
						cmbTraAgente3.setDisabled(true);
						cmbTraCantidadAg3.setDisabled(true);
						cmbTraAplicacionAg3.setDisabled(true);
					} else if (entity2.size() == 3) {
						radCantidad.setValue(3);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setValue(entity2.get(1)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg2.setValue(entity2.get(1)
								.getAgtCantidad());
						cmbTraAplicacionAg2.setValue(entity2.get(1)
								.getAgtAplicacion());
						cmbTraAgente2.setDisabled(false);
						cmbTraCantidadAg2.setDisabled(false);
						cmbTraAplicacionAg2.setDisabled(false);
						cmbTraAgente3.setValue(entity2.get(2)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg3.setValue(entity2.get(2)
								.getAgtCantidad());
						cmbTraAplicacionAg3.setValue(entity2.get(2)
								.getAgtAplicacion());
						cmbTraAgente3.setDisabled(false);
						cmbTraCantidadAg3.setDisabled(false);
						cmbTraAplicacionAg3.setDisabled(false);
					}

				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				txtTraNombre.setValue(entity.getTraNombre());
				txtTraNombre.setDisabled(false);
				txtTraCodigo.setValue(entity.getTraCodigo());
				txtTraCodigo.setDisabled(true);

				btnSave.setDisabled(true);
				// btnDelete.setDisabled(false);
				btnModify.setDisabled(false);
				btnClear.setDisabled(false);
			}
		}
	}

	public String action_cargar(String traCodigo) {
		RebTratamineto entity = null;
		if (traCodigo != null) {
			try {
				int codigo = Integer.parseInt(traCodigo);
				entity = BusinessDelegatorView.getRebTratamineto(codigo);
			} catch (Exception e) {
				// TODO: handle exception
			}

			if (entity == null) {
				// txtTraEstado.setDisabled(false);
				txtTraNombre.setDisabled(false);
				txtTraCodigo.setDisabled(false);

				cmbTraAgente1.setDisabled(false);
				cmbTraCantidadAg1.setDisabled(false);
				cmbTraAplicacionAg1.setDisabled(false);

				cmbTraAgente2.setDisabled(false);
				cmbTraCantidadAg2.setDisabled(false);
				cmbTraAplicacionAg2.setDisabled(false);

				cmbTraAgente3.setDisabled(false);
				cmbTraCantidadAg3.setDisabled(false);
				cmbTraAplicacionAg3.setDisabled(false);

				btnSave.setDisabled(false);
				// btnDelete.setDisabled(true);
				btnModify.setDisabled(true);
				btnClear.setDisabled(false);
			} else {
				Object variables[] = { "rebTratamineto.traCodigo", true,
						entity.getTraCodigo(), "=" };
				List<RebAgentesTratamiento> entity2;
				try {
					entity2 = BusinessDelegatorView
							.findByCriteriaInRebAgentesTratamiento(variables,
									null, null);
					if (entity2.size() == 1) {
						radCantidad.setValue(1);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setDisabled(true);
						cmbTraCantidadAg2.setDisabled(true);
						cmbTraAplicacionAg2.setDisabled(true);
						cmbTraAgente3.setDisabled(true);
						cmbTraCantidadAg3.setDisabled(true);
						cmbTraAplicacionAg3.setDisabled(true);
					} else if (entity2.size() == 2) {
						radCantidad.setValue(2);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setValue(entity2.get(1)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg2.setValue(entity2.get(1)
								.getAgtCantidad());
						cmbTraAplicacionAg2.setValue(entity2.get(1)
								.getAgtAplicacion());
						cmbTraAgente2.setDisabled(false);
						cmbTraCantidadAg2.setDisabled(false);
						cmbTraAplicacionAg2.setDisabled(false);
						cmbTraAgente3.setDisabled(true);
						cmbTraCantidadAg3.setDisabled(true);
						cmbTraAplicacionAg3.setDisabled(true);
					} else if (entity2.size() == 3) {
						radCantidad.setValue(3);
						cmbTraAgente1.setValue(entity2.get(0)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg1.setValue(entity2.get(0)
								.getAgtCantidad());
						cmbTraAplicacionAg1.setValue(entity2.get(0)
								.getAgtAplicacion());
						cmbTraAgente1.setDisabled(false);
						cmbTraCantidadAg1.setDisabled(false);
						cmbTraAplicacionAg1.setDisabled(false);
						cmbTraAgente2.setValue(entity2.get(1)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg2.setValue(entity2.get(1)
								.getAgtCantidad());
						cmbTraAplicacionAg2.setValue(entity2.get(1)
								.getAgtAplicacion());
						cmbTraAgente2.setDisabled(false);
						cmbTraCantidadAg2.setDisabled(false);
						cmbTraAplicacionAg2.setDisabled(false);
						cmbTraAgente3.setValue(entity2.get(2)
								.getRebAgenteBiologico().getAgbCodigo());
						cmbTraCantidadAg3.setValue(entity2.get(2)
								.getAgtCantidad());
						cmbTraAplicacionAg3.setValue(entity2.get(2)
								.getAgtAplicacion());
						cmbTraAgente3.setDisabled(false);
						cmbTraCantidadAg3.setDisabled(false);
						cmbTraAplicacionAg3.setDisabled(false);
					}

				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				txtTraNombre.setValue(entity.getTraNombre());
				txtTraNombre.setDisabled(false);
				txtTraCodigo.setValue(entity.getTraCodigo());
				txtTraCodigo.setDisabled(true);

				btnSave.setDisabled(true);
				// btnDelete.setDisabled(false);
				btnModify.setDisabled(false);
				btnClear.setDisabled(false);
			}
		}
		return ("");
	}

	public String action_cerrar2() {
		btnErrorf = false;
		return "";
	}

	public String action_save() {
		try {
			String Estado = "ACTIVO";
			String id = "";
			String nombre = "";
			String agente1 = "";
			String apli1 = "";
			String cantidad1 = "";
			String agente2 = "";
			String apli2 = "";
			String cantidad2 = "";
			String agente3 = "";
			String apli3 = "";
			String cantidad3 = "";
			String rad = "";
			if (radCantidad.getValue() != null) {
				rad = radCantidad.getValue().toString();
			} else {
				rad = "0";
			}

			if (txtTraCodigo.getValue() != null) {
				id = txtTraCodigo.getValue().toString();
			}
			if (txtTraNombre.getValue() != null) {
				nombre = txtTraNombre.getValue().toString().toUpperCase();
			}
			if (cmbTraAgente1.getValue() != null) {
				agente1 = cmbTraAgente1.getValue().toString();
			}
			if (cmbTraAplicacionAg1.getValue() != null) {
				apli1 = cmbTraAplicacionAg1.getValue().toString();
			}
			if (cmbTraCantidadAg1.getValue() != null) {
				cantidad1 = cmbTraCantidadAg1.getValue().toString();
			}
			if (cmbTraAgente2.getValue() != null) {
				agente2 = cmbTraAgente2.getValue().toString();
			} else {
				agente2 = "0";
			}
			if (cmbTraAplicacionAg2.getValue() != null) {
				apli2 = cmbTraAplicacionAg2.getValue().toString();
			} else {
				apli2 = "0";
			}
			if (cmbTraCantidadAg2.getValue() != null) {
				cantidad2 = cmbTraCantidadAg2.getValue().toString();
			} else {
				cantidad2 = "0";
			}
			if (cmbTraAgente3.getValue() != null) {
				agente3 = cmbTraAgente3.getValue().toString();
			} else {
				agente3 = "0";
			}
			if (cmbTraAplicacionAg3.getValue() != null) {
				apli3 = cmbTraAplicacionAg3.getValue().toString();
			} else {
				apli3 = "0";
			}
			if (cmbTraCantidadAg3.getValue() != null) {
				cantidad3 = cmbTraCantidadAg3.getValue().toString();
			} else {
				cantidad3 = "0";
			}

			if (!Utilities.soloLetras(nombre)) {
				throw new Exception(
						"El Nombre deL Tratamiento debe contener solo letras");
			}

			if (nombre.trim().equals("")) {
				throw new Exception(
						"El Nombre del Tratamiento es de car&#225;cter obligatorio");
			}
			if (rad.equals("0")) {
				throw new Exception("Debe seleccionar una cantidad de Agentes.");
			}
			if (agente1.trim().equals("") || agente1.equals("0")) {
				throw new Exception(
						"El Agente 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (cantidad1.trim().equals("") || cantidad1.equals("0")) {
				throw new Exception(
						"La Cantidad 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (apli1.trim().equals("") || apli1.equals("0")) {
				throw new Exception(
						"La Aplicacion 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (rad.equals("2")) {
				if (agente2.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad2.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli2.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
			}
			if (rad.equals("3")) {
				if (agente2.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad2.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli2.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (agente3.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad3.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli3.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
			}

			BusinessDelegatorView.saveRebTratamineto(null, Estado, nombre,
					new Double(apli1), new Double(apli2), new Double(apli3),
					new Integer(cantidad1), new Integer(cantidad2),
					new Integer(cantidad3), new Integer(agente1), new Integer(
							agente2), new Integer(agente3), FacesUtils
							.checkInteger(radCantidad));

			btnErrorf = true;
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);

			onePageDataModel = null;
			renderManager.getOnDemandRenderer("rebTrataminetoView").requestRender();
            
			action_clear();

		} catch (Exception e) {
			btnErrorf = true;
			btnAceptar.requestFocus();
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public String action_delete() {
		try {
			BusinessDelegatorView.deleteRebTratamineto(FacesUtils
					.checkInteger(txtTraCodigo));
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
			action_clear();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public String action_modify() {
		try {
			String Estado = "ACTIVO";
			String id = "";
			String nombre = "";
			String agente1 = "";
			String apli1 = "";
			String cantidad1 = "";
			String agente2 = "";
			String apli2 = "";
			String cantidad2 = "";
			String agente3 = "";
			String apli3 = "";
			String cantidad3 = "";
			String rad = "";
			if (radCantidad.getValue() != null) {
				rad = radCantidad.getValue().toString();
			} else {
				rad = "0";
			}

			if (txtTraCodigo.getValue() != null) {
				id = txtTraCodigo.getValue().toString();
			}
			if (txtTraNombre.getValue() != null) {
				nombre = txtTraNombre.getValue().toString().toUpperCase();
			}
			if (cmbTraAgente1.getValue() != null) {
				agente1 = cmbTraAgente1.getValue().toString();
			}
			if (cmbTraAplicacionAg1.getValue() != null) {
				apli1 = cmbTraAplicacionAg1.getValue().toString();
			}
			if (cmbTraCantidadAg1.getValue() != null) {
				cantidad1 = cmbTraCantidadAg1.getValue().toString();
			}
			if (cmbTraAgente2.getValue() != null) {
				agente2 = cmbTraAgente2.getValue().toString();
			} else {
				agente2 = "0";
			}
			if (cmbTraAplicacionAg2.getValue() != null) {
				apli2 = cmbTraAplicacionAg2.getValue().toString();
			} else {
				apli2 = "0";
			}
			if (cmbTraCantidadAg2.getValue() != null) {
				cantidad2 = cmbTraCantidadAg2.getValue().toString();
			} else {
				cantidad2 = "0";
			}
			if (cmbTraAgente3.getValue() != null) {
				agente3 = cmbTraAgente3.getValue().toString();
			} else {
				agente3 = "0";
			}
			if (cmbTraAplicacionAg3.getValue() != null) {
				apli3 = cmbTraAplicacionAg3.getValue().toString();
			} else {
				apli3 = "0";
			}
			if (cmbTraCantidadAg3.getValue() != null) {
				cantidad3 = cmbTraCantidadAg3.getValue().toString();
			} else {
				cantidad3 = "0";
			}

			if (!Utilities.soloLetras(nombre)) {
				throw new Exception(
						"El Nombre deL Tratamiento debe contener solo letras");
			}

			if (nombre.trim().equals("")) {
				throw new Exception(
						"El Nombre del Tratamiento es de car&#225;cter obligatorio");
			}
			if (rad.equals("0")) {
				throw new Exception("Debe seleccionar una cantidad de Agentes.");
			}
			if (agente1.trim().equals("") || agente1.equals("0")) {
				throw new Exception(
						"El Agente 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (cantidad1.trim().equals("") || cantidad1.equals("0")) {
				throw new Exception(
						"La Cantidad 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (apli1.trim().equals("") || apli1.equals("0")) {
				throw new Exception(
						"La Aplicacion 1 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
			}
			if (rad.equals("2")) {
				if (agente2.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad2.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli2.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
			}
			if (rad.equals("3")) {
				if (agente2.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad2.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli2.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 2 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (agente3.trim().equals("") || agente1.equals("0")) {
					throw new Exception(
							"El Agente 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (cantidad3.trim().equals("") || cantidad1.equals("0")) {
					throw new Exception(
							"La Cantidad 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
				if (apli3.trim().equals("") || apli1.equals("0")) {
					throw new Exception(
							"La Aplicacion 3 del Tratamiento es de car&#225;cter obligatorio, debes seleccionar alguno");
				}
			}

			BusinessDelegatorView.updateRebTratamineto(new Integer(id), Estado,
					nombre, new Double(apli1), new Double(apli2), new Double(
							apli3), new Integer(cantidad1), new Integer(
							cantidad2), new Integer(cantidad3), new Integer(
							agente1), new Integer(agente2),
					new Integer(agente3), FacesUtils.checkInteger(radCantidad));

			btnErrorf = true;
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
			action_clear();
		} catch (Exception e) {
			btnErrorf = true;
			btnAceptar.requestFocus();
			FacesUtils.addErrorMessage(e.getMessage());
		}

		return "";
	}

	public String action_modifyWitDTO(Integer traCodigo, String traEstado,
			String traNombre) throws Exception {
		try {
			/*
			 * BusinessDelegatorView.updateRebTratamineto(traCodigo, traEstado,
			 * traNombre);
			 */
			renderManager.getOnDemandRenderer("RebTrataminetoView")
					.requestRender();
			FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
		} catch (Exception e) {
			// renderManager.getOnDemandRenderer("RebTrataminetoView").requestRender();
			FacesUtils.addErrorMessage(e.getMessage());
			throw e;
		}

		return "";
	}

	public List<RebTratamineto> getRebTratamineto() {
		if (flag) {
			try {
				rebTratamineto = BusinessDelegatorView.getRebTratamineto();
				flag = false;
			} catch (Exception e) {
				flag = true;
				FacesUtils.addErrorMessage(e.getMessage());
			}
		}

		return rebTratamineto;
	}

	public boolean isFlag() {
		return flag;
	}

	public void setRebTratamineto(List<RebTratamineto> rebTratamineto) {
		this.rebTratamineto = rebTratamineto;
	}

	public boolean isRenderDataTable() {
		try {
			if (flag) {
				if (BusinessDelegatorView.findTotalNumberRebTratamineto() > 0) {
					renderDataTable = true;
				} else {
					renderDataTable = false;
				}
			}

			flag = false;
		} catch (Exception e) {
			renderDataTable = false;
			e.printStackTrace();
		}

		return renderDataTable;
	}

	public DataModel getData() {
		state = PersistentFacesState.getInstance();

		if (onePageDataModel == null) {
			onePageDataModel = new LocalDataModel(pageSize);
		}

		return onePageDataModel;
	}

	/**
	 * This is where the Object data is retrieved from the database and returned
	 * as a list of objects for display in the UI.
	 */
	private DataPage<RebTratamineto> getDataPage(int startRow, int pageSize) {
		// Retrieve the total number of objects from the database. This
		// number is required by the DataPage object so the paginator will know
		// the relative location of the page data.
		int totalNumberRebTratamineto = 0;

		try {
			totalNumberRebTratamineto = BusinessDelegatorView
					.findTotalNumberRebTratamineto().intValue();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		// Calculate indices to be displayed in the ui.
		int endIndex = startRow + pageSize;

		if (endIndex > totalNumberRebTratamineto) {
			endIndex = totalNumberRebTratamineto;
		}

		try {
			rebTratamineto = BusinessDelegatorView.findPageRebTratamineto(
					sortColumnName, sortAscending, startRow, endIndex
							- startRow);

			// Remove this Renderable from the existing render groups.
			// leaveRenderGroups();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		// Add this Renderable to the new render groups.
		// joinRenderGroups();
		// Reset the dirtyData flag.
		onePageDataModel.setDirtyData(false);
		// This is required when using Hibernate. If the SessionManager is not
		// cleared or closed objects are cached and stale objects will show up
		// in the table.
		// This way, the detached objects are reread from the database.
		// This call is not required with Hibernate, which uses a Query Hint
		// to clear the l2 cache in the DAO.
		flag = true;

		return new DataPage<RebTratamineto>(totalNumberRebTratamineto,
				startRow, rebTratamineto);
	}

	public DataModel getDataDTO() {
		state = PersistentFacesState.getInstance();

		if (onePageDataModel == null) {
			onePageDataModel = new LocalDataModelDTO(pageSize);
		}

		return onePageDataModel;
	}

	/**
	 * This is where the Object data is retrieved from the database and returned
	 * as a list of objects for display in the UI.
	 */
	private DataPage<RebTrataminetoDTO> getDataPageDTO(int startRow,
			int pageSize) {
		// Retrieve the total number of objects from the database. This
		// number is required by the DataPage object so the paginator will know
		// the relative location of the page data.
		int totalNumberRebTratamineto = 0;

		try {
			totalNumberRebTratamineto = BusinessDelegatorView
					.findTotalNumberRebTratamineto().intValue();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		// Calculate indices to be displayed in the ui.
		int endIndex = startRow + pageSize;

		if (endIndex > totalNumberRebTratamineto) {
			endIndex = totalNumberRebTratamineto;
		}

		try {
			rebTratamineto = BusinessDelegatorView.findPageRebTratamineto(
					sortColumnName, sortAscending, startRow, endIndex
							- startRow);

			if (Utilities.validationsList(rebTratamineto)) {
				rebTrataminetoDTO = new ArrayList<RebTrataminetoDTO>();

				for (RebTratamineto rebTrataminetoTmp : rebTratamineto) {
					RebTrataminetoDTO rebTrataminetoDTO2 = new RebTrataminetoDTO();

					Object variables[] = { "rebTratamineto.traCodigo", true,
							rebTrataminetoTmp.getTraCodigo(), "=" };
					List<RebAgentesTratamiento> entity2;
					try {
						entity2 = BusinessDelegatorView
								.findByCriteriaInRebAgentesTratamiento(
										variables, null, null);
						rebTrataminetoDTO2
								.setAgente1(entity2.get(0) != null ? entity2
										.get(0).getRebAgenteBiologico()
										.getAgbNombre().toString() : null);
					} catch (Exception e) {
						// TODO: handle exception
					}
					rebTrataminetoDTO2.setTraCodigo(rebTrataminetoTmp
							.getTraCodigo().toString());
					rebTrataminetoDTO2.setTraEstado((rebTrataminetoTmp
							.getTraEstado() != null) ? rebTrataminetoTmp
							.getTraEstado().toString() : null);
					rebTrataminetoDTO2.setTraNombre((rebTrataminetoTmp
							.getTraNombre() != null) ? rebTrataminetoTmp
							.getTraNombre().toString() : null);
					rebTrataminetoDTO2.setRebTratamineto(rebTrataminetoTmp);
					rebTrataminetoDTO2.setRebTrataminetoView(this);
					rebTrataminetoDTO.add(rebTrataminetoDTO2);
				}
			}

			// Remove this Renderable from the existing render groups.
			leaveRenderGroups();
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}

		// Add this Renderable to the new render groups.
		joinRenderGroups();
		// Reset the dirtyData flag.
		onePageDataModel.setDirtyData(false);
		// This is required when using Hibernate. If the SessionManager is not
		// cleared or closed objects are cached and stale objects will show up
		// in the table.
		// This way, the detached objects are reread from the database.
		// This call is not required with Hibernate, which uses a Query Hint
		// to clear the l2 cache in the DAO.
		flag = true;

		return new DataPage<RebTrataminetoDTO>(totalNumberRebTratamineto,
				startRow, rebTrataminetoDTO);
	}

	protected boolean isDefaultAscending(String sortColumn) {
		return true;
	}

	/**
	 * This method is called when a render call is made from the server. Render
	 * calls are only made to views containing an updated record. The data is
	 * marked as dirty to trigger a fetch of the updated record from the
	 * database before rendering takes place.
	 */
	public PersistentFacesState getState() {
		onePageDataModel.setDirtyData();

		return state;
	}

	/**
	 * This method is called from faces-config.xml with each new session.
	 */
	public void setRenderManager(RenderManager renderManager) {
		this.renderManager = renderManager;
	}

	public void renderingException(RenderingException arg0) {
		if (arg0 instanceof TransientRenderingException) {
		} else if (arg0 instanceof FatalRenderingException) {
			// Remove from existing Customer render groups.
			leaveRenderGroups();
		}
	}

	/**
	 * Remove this Renderable from existing uiCustomerBeans render groups.
	 * OnDemandRenderers are named/created using the underlying Customer Number.
	 */
	private void leaveRenderGroups() {
		if (Utilities.validationsList(rebTrataminetoDTO)) {
			for (RebTrataminetoDTO rebTrataminetoTmp : rebTrataminetoDTO) {
				renderManager.getOnDemandRenderer("RebTrataminetoView").remove(
						this);
			}
		}
	}

	/**
	 * Add this Renderable to the new uiCustomerBeans render groups.
	 * OnDemandRenderers are named/created using the underlying Customer Number.
	 */
	private void joinRenderGroups() {
		if (Utilities.validationsList(rebTrataminetoDTO)) {
			for (RebTrataminetoDTO rebTrataminetoTmp : rebTrataminetoDTO) {
				renderManager.getOnDemandRenderer("RebTrataminetoView").add(
						this);
			}
		}
	}

	public void dispose() throws Exception {
	}

	public RenderManager getRenderManager() {
		return renderManager;
	}

	public void setState(PersistentFacesState state) {
		this.state = state;
	}

	public HtmlInputText getTxtTraEstado() {
		return txtTraEstado;
	}

	public void setTxtTraEstado(HtmlInputText txtTraEstado) {
		this.txtTraEstado = txtTraEstado;
	}

	public HtmlInputText getTxtTraNombre() {
		return txtTraNombre;
	}

	public void setTxtTraNombre(HtmlInputText txtTraNombre) {
		this.txtTraNombre = txtTraNombre;
	}

	public HtmlInputText getTxtTraCodigo() {
		return txtTraCodigo;
	}

	public void setTxtTraCodigo(HtmlInputText txtTraCodigo) {
		this.txtTraCodigo = txtTraCodigo;
	}

	public HtmlSelectOneMenu getCmbTraAgente1() {
		try {
			List<RebAgenteBiologico> list = BusinessDelegatorView
					.findByCriteriaInRebAgenteBiologico(null, null, null, true);
			listAgente1.clear();
			listAgente1.add(new SelectItem(0, "Seleccione un valor"));

			for (RebAgenteBiologico agenteBiologico : list) {
				listAgente1.add(new SelectItem(agenteBiologico.getAgbCodigo(),
						agenteBiologico.getAgbNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAgente1;
	}

	public void setCmbTraAgente1(HtmlSelectOneMenu cmbTraAgente1) {
		this.cmbTraAgente1 = cmbTraAgente1;
	}

	public HtmlSelectOneMenu getCmbTraCantidadAg1() {
		try {
			listCantidad1.clear();
			listCantidad1.add(new SelectItem(0, "Seleccione un valor"));
			listCantidad1.add(new SelectItem(30, "30"));
			listCantidad1.add(new SelectItem(50, "50"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraCantidadAg1;
	}

	public void setCmbTraCantidadAg1(HtmlSelectOneMenu cmbTraCantidadAg1) {
		this.cmbTraCantidadAg1 = cmbTraCantidadAg1;
	}

	public HtmlSelectOneMenu getCmbTraAplicacionAg1() {
		try {
			listAplicacion1.clear();
			listAplicacion1.add(new SelectItem(0, "Seleccione un valor"));
			listAplicacion1.add(new SelectItem(3.5, "3,5"));
			listAplicacion1.add(new SelectItem(5.5, "5,5"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAplicacionAg1;
	}

	public void setCmbTraAplicacionAg1(HtmlSelectOneMenu cmbTraAplicacionAg1) {
		this.cmbTraAplicacionAg1 = cmbTraAplicacionAg1;
	}

	public HtmlSelectOneMenu getCmbTraAgente2() {
		try {
			List<RebAgenteBiologico> list = BusinessDelegatorView
					.findByCriteriaInRebAgenteBiologico(null, null, null, true);
			listAgente2.clear();
			listAgente2.add(new SelectItem(0, "Seleccione un valor"));

			for (RebAgenteBiologico agenteBiologico : list) {
				listAgente2.add(new SelectItem(agenteBiologico.getAgbCodigo(),
						agenteBiologico.getAgbNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAgente2;
	}

	public void setCmbTraAgente2(HtmlSelectOneMenu cmbTraAgente2) {
		this.cmbTraAgente2 = cmbTraAgente2;
	}

	public HtmlSelectOneMenu getCmbTraCantidadAg2() {
		try {
			listCantidad2.clear();
			listCantidad2.add(new SelectItem(0, "Seleccione un valor"));
			listCantidad2.add(new SelectItem(30, "30"));
			listCantidad2.add(new SelectItem(50, "50"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraCantidadAg2;
	}

	public void setCmbTraCantidadAg2(HtmlSelectOneMenu cmbTraCantidadAg2) {
		this.cmbTraCantidadAg2 = cmbTraCantidadAg2;
	}

	public HtmlSelectOneMenu getCmbTraAplicacionAg2() {
		try {
			listAplicacion2.clear();
			listAplicacion2.add(new SelectItem(0, "Seleccione un valor"));
			listAplicacion2.add(new SelectItem(3.5, "3,5"));
			listAplicacion2.add(new SelectItem(5.5, "5,5"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAplicacionAg2;
	}

	public void setCmbTraAplicacionAg2(HtmlSelectOneMenu cmbTraAplicacionAg2) {
		this.cmbTraAplicacionAg2 = cmbTraAplicacionAg2;
	}

	public HtmlSelectOneMenu getCmbTraAgente3() {
		try {
			List<RebAgenteBiologico> list = BusinessDelegatorView
					.findByCriteriaInRebAgenteBiologico(null, null, null, true);
			listAgente3.clear();
			listAgente3.add(new SelectItem(0, "Seleccione un valor"));

			for (RebAgenteBiologico agenteBiologico : list) {
				listAgente3.add(new SelectItem(agenteBiologico.getAgbCodigo(),
						agenteBiologico.getAgbNombre()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAgente3;
	}

	public void setCmbTraAgente3(HtmlSelectOneMenu cmbTraAgente3) {
		this.cmbTraAgente3 = cmbTraAgente3;
	}

	public HtmlSelectOneMenu getCmbTraCantidadAg3() {
		try {
			listCantidad3.clear();
			listCantidad3.add(new SelectItem(0, "Seleccione un valor"));
			listCantidad3.add(new SelectItem(30, "30"));
			listCantidad3.add(new SelectItem(50, "50"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraCantidadAg3;
	}

	public void setCmbTraCantidadAg3(HtmlSelectOneMenu cmbTraCantidadAg3) {
		this.cmbTraCantidadAg3 = cmbTraCantidadAg3;
	}

	public HtmlSelectOneMenu getCmbTraAplicacionAg3() {
		try {
			listAplicacion3.clear();
			listAplicacion3.add(new SelectItem(0, "Seleccione un valor"));
			listAplicacion3.add(new SelectItem(3.5, "3,5"));
			listAplicacion3.add(new SelectItem(5.5, "5,5"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return cmbTraAplicacionAg3;
	}

	public void setCmbTraAplicacionAg3(HtmlSelectOneMenu cmbTraAplicacionAg3) {
		this.cmbTraAplicacionAg3 = cmbTraAplicacionAg3;
	}

	public HtmlCommandButton getBtnSave() {
		return btnSave;
	}

	public void setBtnSave(HtmlCommandButton btnSave) {
		this.btnSave = btnSave;
	}

	public HtmlCommandButton getBtnModify() {
		return btnModify;
	}

	public void setBtnModify(HtmlCommandButton btnModify) {
		this.btnModify = btnModify;
	}

	public HtmlCommandButton getBtnDelete() {
		return btnDelete;
	}

	public void setBtnDelete(HtmlCommandButton btnDelete) {
		this.btnDelete = btnDelete;
	}

	public HtmlCommandButton getBtnClear() {
		return btnClear;
	}

	public void setBtnClear(HtmlCommandButton btnClear) {
		this.btnClear = btnClear;
	}

	public HtmlCommandButton getBtnAceptar() {
		return btnAceptar;
	}

	public void setBtnAceptar(HtmlCommandButton btnAceptar) {
		this.btnAceptar = btnAceptar;
	}

	public void setRenderDataTable(boolean renderDataTable) {
		this.renderDataTable = renderDataTable;
	}

	public void setFlag(boolean flag) {
		this.flag = flag;
	}

	public List<RebTrataminetoDTO> getRebTrataminetoDTO() {
		return rebTrataminetoDTO;
	}

	public void setRebTrataminetoDTO(List<RebTrataminetoDTO> rebTrataminetoDTO) {
		this.rebTrataminetoDTO = rebTrataminetoDTO;
	}

	public List<SelectItem> getListAgente1() {
		return listAgente1;
	}

	public void setListAgente1(List<SelectItem> listAgente1) {
		this.listAgente1 = listAgente1;
	}

	public List<SelectItem> getListCantidad1() {
		return listCantidad1;
	}

	public void setListCantidad1(List<SelectItem> listCantidad1) {
		this.listCantidad1 = listCantidad1;
	}

	public List<SelectItem> getListAplicacion1() {
		return listAplicacion1;
	}

	public void setListAplicacion1(List<SelectItem> listAplicacion1) {
		this.listAplicacion1 = listAplicacion1;
	}

	public List<SelectItem> getListAgente2() {
		return listAgente2;
	}

	public void setListAgente2(List<SelectItem> listAgente2) {
		this.listAgente2 = listAgente2;
	}

	public List<SelectItem> getListCantidad2() {
		return listCantidad2;
	}

	public void setListCantidad2(List<SelectItem> listCantidad2) {
		this.listCantidad2 = listCantidad2;
	}

	public List<SelectItem> getListAplicacion2() {
		return listAplicacion2;
	}

	public void setListAplicacion2(List<SelectItem> listAplicacion2) {
		this.listAplicacion2 = listAplicacion2;
	}

	public List<SelectItem> getListAgente3() {
		return listAgente3;
	}

	public void setListAgente3(List<SelectItem> listAgente3) {
		this.listAgente3 = listAgente3;
	}

	public List<SelectItem> getListCantidad3() {
		return listCantidad3;
	}

	public void setListCantidad3(List<SelectItem> listCantidad3) {
		this.listCantidad3 = listCantidad3;
	}

	public List<SelectItem> getListAplicacion3() {
		return listAplicacion3;
	}

	public void setListAplicacion3(List<SelectItem> listAplicacion3) {
		this.listAplicacion3 = listAplicacion3;
	}

	public HtmlSelectOneRadio getRadCantidad() {
		try {
			cantidadAgen.clear();
			cantidadAgen.add(new SelectItem(1, "1"));
			cantidadAgen.add(new SelectItem(2, "2"));
			cantidadAgen.add(new SelectItem(3, "3"));
		} catch (Exception e) {
			// TODO: handle exception
		}
		return radCantidad;
	}

	public void setRadCantidad(HtmlSelectOneRadio radCantidad) {
		this.radCantidad = radCantidad;
	}

	public List<SelectItem> getCantidadAgen() {
		return cantidadAgen;
	}

	public void setCantidadAgen(List<SelectItem> cantidadAgen) {
		this.cantidadAgen = cantidadAgen;
	}

	public boolean isBtnErrorf() {
		return btnErrorf;
	}

	public void setBtnErrorf(boolean btnErrorf) {
		this.btnErrorf = btnErrorf;
	}

	public TimeZone getTimeZone() {
		return java.util.TimeZone.getDefault();
	}

	/**
	 * A special type of JSF DataModel to allow a datatable and datapaginator to
	 * page through a large set of data without having to hold the entire set of
	 * data in memory at once. Any time a managed bean wants to avoid holding an
	 * entire dataset, the managed bean declares this inner class which extends
	 * PagedListDataModel and implements the fetchData method. fetchData is
	 * called as needed when the table requires data that isn't available in the
	 * current data page held by this object. This requires the managed bean
	 * (and in general the business method that the managed bean uses) to
	 * provide the data wrapped in a DataPage object that provides info on the
	 * full size of the dataset.
	 */
	private class LocalDataModel extends PagedListDataModel {
		public LocalDataModel(int pageSize) {
			super(pageSize);
		}

		public DataPage<RebTratamineto> fetchPage(int startRow, int pageSize) {
			// call enclosing managed bean method to fetch the data
			return getDataPage(startRow, pageSize);
		}
	}

	private class LocalDataModelDTO extends PagedListDataModel {
		public LocalDataModelDTO(int pageSize) {
			super(pageSize);
		}

		public DataPage<RebTrataminetoDTO> fetchPage(int startRow, int pageSize) {
			// call enclosing managed bean method to fetch the data
			return getDataPageDTO(startRow, pageSize);
		}
	}
}
